package w83b.w83bOperacionesPaso.w83bActas;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import w83b.w83bBeans.W83bActasBean;
import w83b.w83bBeans.W83bListaDelegadosBean;
import w83b.w83bBeans.W83bListaDiferenciasBean;
import w83b.w83bBeans.W83bListaEscrutiniosBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83bTablaAgrupacionesOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83bTablaActasIrEditarAction extends Q70ActionPasoOP{

	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		W83bActasBean acta=(W83bActasBean)contexto.get("w83bNuevaActaBean");
		HashMap delegados=(HashMap)acta.getListaDelegados();
		
		HashMap w83bdelegadosDelegado=new HashMap();
		HashMap w83bescrutinioC1=new HashMap();
		HashMap w83bescrutinioC2=new HashMap();
		HashMap w83bdiferenciaC1=new HashMap();
		HashMap w83bdiferenciaC2=new HashMap();
		HashMap w83bdelegadosEscrutinioDiferencia=new HashMap();
		Collection c = delegados.values();
		Iterator itr = c.iterator();
		int valor=0;
		int sumaDelegados=0;
		int sumaDelegadosH=0;
		int sumaDelegadosM=0;
		while(itr.hasNext()){
			W83bListaDelegadosBean delegado=(W83bListaDelegadosBean)itr.next();
			if(StringUtils.isEmpty(delegado.getFechaBaja())){
				valor=Integer.parseInt(delegado.getNumero());
				if(w83bdelegadosDelegado!=null){
					if(w83bdelegadosDelegado.containsKey(delegado.getCodColegio()+"#"+delegado.getSexo()+"#"+delegado.getCodSindicato())){
						valor=valor+Integer.parseInt((String)w83bdelegadosDelegado.get(delegado.getCodColegio()+"#"+delegado.getSexo()+"#"+delegado.getCodSindicato()));
					}
				}
				if(StringUtils.isEmpty(delegado.getFechaBaja())){
					sumaDelegados++;
					if(W83bClsConstantes.CONSTANTE_VARON.equals(delegado.getSexo())){
						sumaDelegadosH++;
					}else if(W83bClsConstantes.CONSTANTE_MUJER.equals(delegado.getSexo())){
						sumaDelegadosM++;						
					}
				}
				w83bdelegadosDelegado.put(delegado.getCodColegio()+"#"+delegado.getSexo()+"#"+delegado.getCodSindicato(), String.valueOf(valor));
			}
		}
		contexto.set("w83bdelegadosDelegado", w83bdelegadosDelegado);
		contexto.set("w83bListaDelegados", delegados);
		acta.setTotalDelegadosDelegado(String.valueOf(sumaDelegados));
		acta.setTotalDelegadosDelegadoH(String.valueOf(sumaDelegadosH));
		acta.setTotalDelegadosDelegadoM(String.valueOf(sumaDelegadosM));
		acta.setListaDelegados(new HashMap());
		
		HashMap escrutinios=(HashMap)acta.getListaEscrutinios();
		c = escrutinios.values();
		itr = c.iterator();
		while(itr.hasNext()){
			W83bListaEscrutiniosBean escrutinio=(W83bListaEscrutiniosBean)itr.next();
			if(escrutinio.getCodColegio().equals("0")){
				w83bescrutinioC1.put(escrutinio.getSindicato(), escrutinio);
				w83bdelegadosEscrutinioDiferencia.put("0#H#"+escrutinio.getSindicato(), escrutinio.getHombres());
				w83bdelegadosEscrutinioDiferencia.put("0#M#"+escrutinio.getSindicato(), escrutinio.getMujeres());
			}
			else{
				w83bescrutinioC2.put(escrutinio.getSindicato(), escrutinio);
				w83bdelegadosEscrutinioDiferencia.put("1#H#"+escrutinio.getSindicato(), escrutinio.getHombres());
				w83bdelegadosEscrutinioDiferencia.put("1#M#"+escrutinio.getSindicato(), escrutinio.getMujeres());
			}
		}
		contexto.set("w83bListaEscrutiniosC1", w83bescrutinioC1);
		contexto.set("w83bListaEscrutiniosC2", w83bescrutinioC2);
		HashMap diferencias=(HashMap)acta.getListaDiferencias();
		c = diferencias.values();
		itr = c.iterator();
		while(itr.hasNext()){
			W83bListaDiferenciasBean diferencia=(W83bListaDiferenciasBean)itr.next();
			int anterior=0;
			if(diferencia.getCodColegio().equals("0")){
				w83bdiferenciaC1.put(diferencia.getSindicato(), diferencia);
				anterior=Integer.parseInt(diferencia.getHombres());
				if(StringUtils.isNotEmpty((String)w83bdelegadosEscrutinioDiferencia.get("0#H#"+diferencia.getSindicato()))){
					anterior=anterior+Integer.parseInt((String)w83bdelegadosEscrutinioDiferencia.get("0#H#"+diferencia.getSindicato()));
				}
				if(anterior!=0){
					w83bdelegadosEscrutinioDiferencia.put("0#H#"+diferencia.getSindicato(), String.valueOf(anterior));
				}
				
				anterior=Integer.parseInt(diferencia.getMujeres());
				if(StringUtils.isNotEmpty((String)w83bdelegadosEscrutinioDiferencia.get("0#M#"+diferencia.getSindicato()))){
					anterior=anterior+Integer.parseInt((String)w83bdelegadosEscrutinioDiferencia.get("0#M#"+diferencia.getSindicato()));
				}
				if(anterior!=0){
					w83bdelegadosEscrutinioDiferencia.put("0#M#"+diferencia.getSindicato(), String.valueOf(anterior));
				}
			}
			else{
				w83bdiferenciaC2.put(diferencia.getSindicato(), diferencia);
				anterior=Integer.parseInt(diferencia.getHombres());
				if(StringUtils.isNotEmpty((String)w83bdelegadosEscrutinioDiferencia.get("1#H#"+diferencia.getSindicato()))){
					anterior=anterior+Integer.parseInt((String)w83bdelegadosEscrutinioDiferencia.get("1#H#"+diferencia.getSindicato()));
				}
				if(anterior!=0){
					w83bdelegadosEscrutinioDiferencia.put("1#H#"+diferencia.getSindicato(), String.valueOf(anterior));
				}
				
				anterior=Integer.parseInt(diferencia.getMujeres());
				if(StringUtils.isNotEmpty((String)w83bdelegadosEscrutinioDiferencia.get("1#M#"+diferencia.getSindicato()))){
					anterior=anterior+Integer.parseInt((String)w83bdelegadosEscrutinioDiferencia.get("1#M#"+diferencia.getSindicato()));
				}
				if(anterior!=0){
					w83bdelegadosEscrutinioDiferencia.put("1#M#"+diferencia.getSindicato(), String.valueOf(anterior));
				}
			}
		}
		contexto.set("w83bListaDiferenciasC1", w83bdiferenciaC1);
		contexto.set("w83bListaDiferenciasC2", w83bdiferenciaC2);
		
		contexto.set("w83bdelegadosEscrutinioDiferencia", w83bdelegadosEscrutinioDiferencia);
		acta.setDelegadosEscrDif(null);
		contexto.set("modoPantalla",W83bClsConstantes.MODO_EDICION);
		if("actas".equals((String)contexto.get("w83bSubOpFlag"))){
			contexto.set("migas","inicio.menuActas.busqActas.edicionActa");
			contexto.set("strTitleKeyPpal","comun.menu.actas");
			contexto.set("strTitleKey","comun.actas.edicionActa");
		}
		W83bUsuarioXLNetsBean usuario= (W83bUsuarioXLNetsBean)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_USUARIO);
		contexto.set("w83bRegManual", usuario.getRegManual());
		
		contexto.set("w83bNuevaActaBean",acta);
		
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		W83bActasBean acta = (W83bActasBean)((W83bActasBean)contexto.get("w83bNuevaActaBean")).clone();
		acta.setListaDelegados(copyHashMapListaDelegado((HashMap)contexto.get("w83bListaDelegados")));
		contexto.set("w83bDetalleActaTempBean",acta);
		return mapping.findForward("ok");
	}
	
	public HashMap copyHashMapListaDelegado(HashMap copiedHashMap){
		HashMap copyHashMap = new HashMap();
		
       Iterator ite = copiedHashMap.keySet().iterator();
       
       while(ite.hasNext()){
    	   String key = (String)ite.next();    	   
    	   copyHashMap.put(key, new W83bListaDelegadosBean((W83bListaDelegadosBean)copiedHashMap.get(key)));//NOPMD
       }
		
		
		return copyHashMap;
	}

}
